1. Field of the Invention
The present invention relates to a forward/inverse discrete cosine transform (referred to hereinafter as DCT) circuit using a distributed arithmetic process.
2. Description of the Prior Art
A distributed arithmetic process is mainly used in signal processing systems. Such a distributed arithmetic process is described in an article entitled, "A New Hardware Realization of Digital Filters" in the IEEE Transactions on Acoustic, Speech and Signal Processing, Vol . ASSP-22, pp. 456-462, December 1974, by A. Peled and B. Lin. Here, it is assumed that a variable X can be obtained on the basis of variables Y.sub.0 . . . Y.sub.3 according to the following equation (1): EQU X=C.sub.0 Y.sub.0 +C.sub.1 Y.sub.1 +C.sub.2 Y.sub.2 +C.sub.3 Y.sub.3( 1)
Also, it is assumed that each of the variable X and the variables Y.sub.0 . . . Y.sub.3 can be expressed by a n-bit 2's complement as follows: ##EQU1##
In the above equations, the values .SIGMA..sub.k=0.sup.3 2.sup.i y.sub.k.sup.i C.sub.K can readily be obtained by previously calculating the values .SIGMA..sub.k=0.sup.3 y.sub.k.sup.i C.sub.K in all possible cases of y.sub.k.sup.i and storing the calculated values in a read only memory (referred to hereinafter as ROM). The desired value X can finally be obtained by adding the partial sums continuously.
FIG. 1 shows one example of circuits performing the above-mentioned distributed arithmetic process. The circuit of FIG. 1 comprises a ROM 10 and an accumulator 20 in cascade, called RAC. This RAC is a basic element in performing the distributed arithmetic process. The accumulator 20 is provided with an adder 20a and a parallel register 20b.
One-dimensional forward and inverse DCTs having N inputs can be defined respectively by the following equations (5) and (6): ##EQU2##
The DCT was first implemented based on the distributed arithmetic process by a M-T Sun of Bellcore. The M-T Sun implemented a 16-point DCT on the basis of the distributed arithmetic process. FIG. 2 shows a conventional 16-point DCT circuit which is implemented based on the distributed arithmetic process by the M-T Sun (see M-T Sun, T-C Chen and A. M. Cottieb, "VLSI Implementation of a 16.times.16 Discrete Cosine Transform", IEEE Transactions on Circuits and Systems, Vol. 36, No. 4, pp. 610-617, April 1989, and M-L Lios and M-T Sun, "Two-dimensional Discrete Cosine Transform Processor", U.S. Pat. No. 4,791,598).
In FIG. 2, each of RACs 1-16 i s a RAC module provided with a ROM and an accumulator. The RACs are basic elements of the DCT circuit using the distributed arithmetic process and require a large number of components in the circuitry. For this reason, in the implementation of the DCT circuit using the distributed arithmetic process, the number of components and the complexity can be reduced by reducing the number of the RACs and the size of the ROMs therein.
The DCT circuit of FIG. 2 is desirable to obtain the forward DCT but cannot provide the inverse DCT, in that the contents of the ROMs in the RACs are different in the forward and inverse DCTs due to different algorithms. But, the DCT circuit of FIG. 2 may be modified for the implementation of the inverse DCT. In order to implement both the forward and inverse DCTs, additional 8 RAC modules must be provided in the construction of FIG. 2. Namely, 24 RAC modules must be used to implement both the forward and inverse DCTs. According to the prior art, in order to implement a forward and inverse DTCs, the number of RAC modules is generally needed to one and half times more than the number of RAC modules for the only forward DTC or the only inverse DTC.
In the case where the DCT circuit of FIG. 2 is to be applied as a real time 8-point DCT circuit, which yields the result every clock, 12 RAC modules must be used to implement both the forward and inverse DCTs on the assumption that input, output and internal values are 16 bits. Namely, since 8 data transfer paths are present in the DCT circuit, each of them requires 2 RACs to process 2 bits every clock. In this case, 8 of the 12 RACs are required to perform the forward DCT and the remaining RACs are required to perform the inverse DCT.
However, the above-mentioned conventional DCT circuit has a disadvantage in that the components are significantly increased in number and the construction becomes very complex according to function extension.